package com.hcss.sys.modulelog.queue;

import com.hcss.sys.modulelog.model.HcSysModulelog;
import lombok.extern.slf4j.Slf4j;

import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;

/**
 * @描述: 模块访问日志日志处理队列
 * @作者: fengzhaodong
 * @创建日期: 2019-09-30 16:09
 * @公司 浙江鸿程计算机系统有限公司
 */
@Slf4j
public class ModuleLogServiceQueue {
    private static final ModuleLogServiceQueue instance;
    private final BlockingQueue<HcSysModulelog> queue = new LinkedBlockingQueue<>();
    static {
        instance = new ModuleLogServiceQueue();
    }
    private ModuleLogServiceQueue(){}

    public static ModuleLogServiceQueue getInstance() {
        return instance;
    }

    /**
     * 插入数据，队列满了等待
     * @param msg
     */
    public void put(HcSysModulelog msg) {
        try {
            queue.put(msg);
        } catch (InterruptedException e) {
            log.error("向待生成发送消息的队列插入数据出错，data:{}", msg.toString(), e);
        }
    }

    /**
     * 获取数据，为空返回null
     * @return
     */
    public HcSysModulelog poll(){
        try {
            return queue.take();
        } catch (InterruptedException e) {
            log.error("获取数据出错，错误原因:{}", e.getMessage());
        }
        return null;
    }
}
